package com.mlh.dp.基础题目;

/**
 * @author 缪林辉
 * @date 2024/9/12 11:10
 * @DESCRIPTION
 */
//给定一个包含非负整数的 m x n 网格 grid ，请找出一条从左上角到右下角的路径，使得路径上的数字总和为最小。
// 说明：每次只能向下或者向右移动一步。
public class 最小路径和 {
    public int method1(int[][] grid) {
        int rowLen=grid.length;
        int colLen=grid[0].length;
        //初始化
        for (int i = 1; i < colLen; i++) {
            grid[0][i]=grid[0][i]+grid[0][i-1];
        }
        for (int i = 1; i < rowLen; i++) {
            grid[i][0]=grid[i-1][0]+grid[i][0];
        }
        for (int i = 1; i < rowLen; i++) {
            for (int j = 1; j < colLen; j++) {
                grid[i][j]=Math.min(grid[i-1][j],grid[i][j-1])+grid[i][j];
            }
        }
        return grid[rowLen-1][colLen-1];
    }
}
